using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using Rest;

namespace Coriander.Google.Charting
{
    /// <summary>
    /// 
    /// </summary>
    /// <remarks>
    /// See: http://code.google.com/apis/chart/#shape_markers2
    /// </remarks>
    public class ChartMarker
    {
        Color color = ColorTranslator.FromHtml("#FF0000");

        Int32 dataSetIndex;

        Double? dataPoint;

        String markerType = "s";

        /// <summary>
        /// One of the following characters:
        /// 
        ///     a represents an arrow.
        ///     c represents a cross.
        ///     d represents a diamond.
        ///     o represents a circle.
        ///     s represents a square.
        ///     v represents a vertical line from the x-axis to the data point.
        ///     V represents a vertical line to the top of the chart.
        ///     h represents a horizontal line across the chart.
        ///     x represents an x shape.
        /// 
        /// Defaults to "s".
        /// </summary>
        public String MarkerType
        {
            get { return markerType; }
            set { markerType = value; }
        }

        Int32 size;

        /// <summary>
        /// The color of the marker
        /// </summary>
        /// <remarks>
        /// An RRGGBB format hexadecimal number.
        /// </remarks>
        public Color Color
        {
            get { return color; }
            set { color = value; }
        }

        /// <summary>
        /// A floating point value that specifies on which data point the marker will 
        /// be drawn. This is 1 for the first data set, 2 for the second and so on. 
        /// Specify a fraction to interpolate a marker between two points.
        /// </summary>
        public Double? DataPoint
        {
            get { return dataPoint; }
            set { dataPoint = value; }
        }

        /// <summary>
        /// The index of the line on which to draw the marker. 
        /// This is 0 for the first data set, 1 for the second and so on.
        /// </summary>
        public Int32 DataSetIndex
        {
            get { return dataSetIndex; }
            set { dataSetIndex = value; }
        }

        /// <summary>
        /// The size of the marker in pixels
        /// </summary>
        public Int32 Size
        {
            get { return size; }
            set { size = value; }
        }
    }
}